package psn.kiko.mapper.business.system;

import org.apache.ibatis.annotations.Mapper;
import psn.kiko.annotation.sql.CommonFiledAutoSet;
import psn.kiko.annotation.sql.NeedCommonFiledAutoSet;
import psn.kiko.enumeration.DataBaseOperationType;
import psn.kiko.pojo.entity.system.UserEntity;
import psn.kiko.pojo.vo.UserVO;

import java.util.List;

/**
 * 用户DAO
 */
@Mapper
public interface UserMapper{
	/**
	 * 批量插入用户，通过AOP自动设置创建时间、创建者id、更新时间、更新者id
	 * */
	@CommonFiledAutoSet(DataBaseOperationType.INSERT_BATCH)
	Integer insertBatch(@NeedCommonFiledAutoSet List<UserEntity> list);
	
	/**
	 * 查询用户
	 * */
	UserEntity select(UserEntity userEntity);
	
	/**
	 * 根据id删除一批用户（可编辑的用户）
	 * */
	Integer deleteBatchByIds(List<Integer> ids);
	
	/**
	 * 查询用户集合，携带查询条件
	 * */
	List<UserVO> selectList(UserEntity userEntity);
	
	/**
	 * 根据id批量修改用户状态（可编辑的用户）
	 * */
	Integer updateStatusByIds(List<Integer> ids,short enableOrDisable);
	
	/**
	 * 根据id查询用户
	 * */
	UserEntity selectById(Integer id);
	
	/**
	 * 修改用户（可编辑的用户），通过AOP自动设置更新时间、更新者id
	 * */
	@CommonFiledAutoSet(DataBaseOperationType.UPDATE)
	Integer updateById(@NeedCommonFiledAutoSet UserEntity userEntity);
	
	/**
	 * 根据id更新用户（可编辑的用户）登录状态
	 * */
	Integer updateLoginStatusById(Integer userId,Short LoginOrLogout);
}
